#爬取图片
'''
设计思路：
    1.确定爬取网站的目标
    2.分析网页的数据{1.url数据 2. 网页数据，3.网页的编码格式}
    3.编写代码，请求网站，（突破反爬虫机制）  解决bug
    4.成果演示


HTTP，https  ------ssl加密的
需要隐藏爬虫序的从身份

1.get请求   用于从服务器获取数据做处理
2.post       用于向服务器发送请求的
'''

from bs4 import BeautifulSoup    #用于解决所有HTML信息，从中获取所需的信息
from urllib.request import  urlretrieve    #使程序智能化，自动创建一个临时的文件进行保存

import requests,os
#  面向对象    面向过程
#请求头

#程序入口

if __name__ == '__main__':
    list_url = []
    #如果本里没有这个文件夹，就会创建一个名字为  img 的文件夹
    if 'img' not  in os.listdir():

        os.makedirs("img")
    for num in range(1,3):
        if num ==1:
            url = 'http://588ku.com/sucai/0-pxnum-0-0-0-1/?h=bd&sem=1'
        else:
            url = 'http://588ku.com/sucai/page%d/'%num
        #模拟浏览器   反爬虫机制
        headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}
        #发送请求
        req = requests.get(url,headers=headers)
        req.encoding = 'utf-8'
        # print(req.text)
        #1.需要解析的文档，2解析器(1.html.parser,2.lxml)
        html = req.text
        bf = BeautifulSoup(html,'lxml')
        bf.encoding = 'utf-8'
        # print(bf)
        #   find 每次只能取一个元素   findall使一个列表
        #定位到图片所在的标签
        target_url = bf.find_all(class_ = "img-show")
        print(target_url)
        #遍历
        for each in target_url:
            #图片的名字 + 图片路径
            list_url.append(each.img.get('alt') + "=" + each.a.get('href'))
        print(list_url)
    print("数据采集完成")

    #通过列表索引进行取值
    for each_img in list_url:
        img_info = each_img.split('=')
        print(img_info)
        # print(img_info)
        #提取出图片路径
        target_url = img_info[1]
        print('地址',target_url)
        #提取出图片名称
        filename = img_info[0] + '.jpg'
        print('名称',filename)



        # 模拟浏览器   反爬虫机制
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}
        # 发送请求
        req_img = requests.get(url=target_url, headers=headers)
        req_img.encoding = 'utf-8'
        # print(req.text)
        # 1.需要解析的文档，2解析器(1.html.parser,2.lxml)
        html_img = req_img.text
        bf_img = BeautifulSoup(html_img, 'lxml')
        # print(bf_img)
        #   find 每次只能取一个元素   findall使一个列表
        # 定位到图片所在的标签
        img_url = bf_img.find_all('div',class_="img-l-box")
        print('img_url',img_url)
        #返回的元素不是string类型，而是bytes类型，，需要解码，把bytes强制转化为string
        img_bf = BeautifulSoup(str(img_url),'lxml')
        print("img_bf",img_bf)
        print(img_bf.div.img.get('src'))
        img_url = '' + img_bf.img.get('src')
        print(img_url)
        urlretrieve(url=img_url,filename="img/" + filename)

